A content addressable memory (CAM) used as an address translation system may be viewed conceptually as a search engine that is fabricated from hardware rather than software. Software search engines, which are algorithmically based, have a tendency to function substantially slower than hardware-based CAMs. CAMs, as a basis of their search function, can be formed from arrays of conventional semiconductor memory, for example static random access memory (SRAM), together with additional comparison circuitry that enables a search operation to finish in a single system clock cycle. One routine search-intensive task that benefits significantly from a CAM system is the address lookup task performed in routers such as Internet routers. Other typical uses of CAM include caches such as processor caches, translation look aside buffers (TLBs), database accelerators, and data compression applications.
CAM array systems typically employ an input data latch for temporary storage of compare input data or address lookup data. These CAM systems may also employ an address search line generator that generates true and complement data bit versions of the latched compare input data. The address search line data is buffered through a buffer or driver circuit that supplies the search line data to the input of a CAM array. A conventional CAM is configured as an array of individual binary CAM core cells. A typical binary CAM core cell supports the storage and searching of binary bits, namely one or zero (1, 0). A single CAM cell stores a binary bit as compare bitline data in “true and complement” data form, meaning a zero is stored in both a zero state and a complemented one state within the core cell. In contrast, a one is stored both as a one state and a complemented zero state. Horizontal and vertical rows of NOR-based architecture CAM core cells can be configured to form a large CAM array. In such an array, the CAM size is described first by the number of horizontal cells which is also called the word size. And second, the CAM size is described by the vertical cell count which corresponds to the number of words stored and available during a compare operation. In a compare operation, input data is simultaneously compared against each word stored in the CAM array.
CAM core cells include both storage and comparison circuitry. Compare bitlines or search lines run vertically through the CAM cell and broadcast the search data to all CAM cells at the same time. Match lines run horizontally across the array and indicate whether or not the search data matches a particular row's word. In more detail, an activated match line (an active high logic state) indicates a match and a deactivated match line (a low logic state) indicates a mismatch for a particular word corresponding to that match line. These match lines which describe the output of the CAM array are typically coupled to memory devices such as static random access memories (SRAMs) or dynamic random access memories (DRAMs) to provide the actual address translation or output match data.
A CAM search operation begins with precharging all match lines high, thereby placing all match lines temporarily in the match state. Next, interrogate or search lines broadcast the search data in binary vertically simultaneously across all words of the array. Then, each CAM core cell compares its stored single binary data against the bit on its corresponding search lines. Cells with matching data do not affect the corresponding word's match line, but cells with a mismatch pull down the corresponding word's match line to a binary zero state by deactivating their match line output. The aggregate result is that the match line of any word having at least one bit mismatch is pulled low. All other match lines remain activated (precharged high). Usually almost all match lines are driven low thus indicating mismatches for the words corresponding to those match lines. Typically, one or a small number of match lines will remain high to indicate a matching word or words. Finally, the match line(s) that remain high, indicating a matching word, are used as the input to an address lookup memory that is coupled to the output of the CAM. The wordline data thus addressed in the address lookup memory is then read from the address lookup memory and latched as output data to provide the ultimate result of the search.
CAM systems typically sequence compare data through each stage of the CAM system in a synchronous or predicted timing fashion wherein timing signals are generated in hardware within the CAM. These CAM timing signals are not adjustable once generated by the CAM circuitry. CAM timing signals can be critical to CAM performance since they may determine power use optimization. These CAM timing signals may also affect setup of data to be latched or tested in a CAM array. Moreover CAM timing signals may impact the settling time before output data is valid and latched.
CAM cell precharge and CAM cell evaluation are controlled by CAM timing signals. CAM systems are typically designed to minimize the collision or overlap between CAM cell precharge and the evaluation of the CAM array output. A collision or overlap of CAM cells precharge and evaluation results in undesirable power consumption and performance loss. This power loss may occur because CAM output transistors are driven for a period of time without valid resultant data being presented for the next sequential operation within the CAM system.
What is needed is a method of operating a CAM apparatus that solves the problems describe above such as lack of CAM timing signal adjustability and power loss problems.